/*
 * Created by SharpDevelop.
 * user: Robertux
 * Date: 20/03/2008
 * Time: 14:54
 * 
 * 
 */

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using DataLayer;
using Inventador;

namespace WinApp
{
	/// <summary>
	/// Description of frmAddMovimiento.
	/// </summary>
	public partial class frmAddMovimiento : Form
	{
		private BaseDatos bdatos;
		private DialogResult result;
		private List<Producto> productos;
		
		public DialogResult Result
		{
			get { return this.result; }
		}
		
		public frmAddMovimiento()
		{
			InitializeComponent();
		}
		
		public frmAddMovimiento(BaseDatos bdatosExterna): this()
		{
			this.bdatos = bdatosExterna;
			this.productos = Producto.GetList(this.bdatos, "id != 0");
			this.RellenarGrid();
			this.comboBox1.SelectedIndex = 0;
			this.result = DialogResult.Cancel;
		}
		
		public void RellenarGrid()
		{
			this.grdProductos.Rows.Clear();
			foreach(Producto prod in this.productos)
				this.grdProductos.Rows.Add(new object[]{prod.Id, prod.fkTipoProducto.Nombre, prod.fkMarcaProducto.Nombre, prod.ExistenciaActual, prod.ExistenciaMinima, prod.Descripcion});
		}
		
		void Button1Click(object sender, EventArgs e)
		{
			this.Close();
		}
		
		void Button2Click(object sender, EventArgs e)
		{
			if(this.comboBox1.SelectedIndex == 1)  //Salida.
			{
				if(this.numericUpDown1.Value > this.productos[this.grdProductos.SelectedRows[0].Index].ExistenciaActual)
				{
					MessageBox.Show("La cantidad de producto seleccionada es mayor que la cantidad existente");
					return;
				}
			}
			int maxId = Movimiento.GetMaxId(this.bdatos);
			Movimiento mov = new Movimiento(maxId + 1, this.comboBox1.Text, this.productos[this.grdProductos.SelectedRows[0].Index], int.Parse(this.numericUpDown1.Value.ToString()),DateTime.Now);
			mov.Insert(this.bdatos);
			if(this.comboBox1.SelectedIndex == 0) //Entrada
				mov.fkProducto.ExistenciaActual += mov.Cantidad;
			else
				mov.fkProducto.ExistenciaActual -= mov.Cantidad;
			mov.fkProducto.Update(this.bdatos);
			this.result = DialogResult.OK;
			this.Close();
		}
	}
}
